// 文件操作：
// 1. 文件的写入
const fs = require('fs');
// let str = 'hello你好';
// try {
//     fs.writeFileSync('./data.txt',str);
//     console.log('写入成功');
// }catch (err) {
//     console.log(err);
// }

// fs.writeFileSync(写入地址，写入内容)

// 2. 文件的读取
// 异步读取文件：都是有回调函数的
// fs.readFile('./data.txt',(err,data)=>{
//     if(err){
//         return console.log(err);
//     }
//     // console.log(data);
//     console.log(data.toString()); // 把buffer数据转成字符串
// })

// fs.readFile(读取地址，(错误，和读取内容)=>{})

// 同步读取文件，没有回调函数
// try {
//     let data = fs.readFileSync('./data.txt');
//     console.log(data.toString());
// } catch (err) {
//     console.log(err);
// }

// let data = fs.readFile(读取地址)

// 3. 修改文件
// 修改文件名
// 异步修改文件名
// fs.rename('./data.txt','./2.txt',err=>{
//     if(err){
//         return console.log(err);
//     }
//     console.log('修改成功');
// })

// fs.rename(被修改名，修改名，err=>{})

// 同步修改文件名
// try {
//     fs.renameSync('./2.txt','./3.txt');
//     console.log('修改成功');
// } catch (err) {
//     console.log('错误');
// }

// fs.renameSync(被修改名，修改名)

// 修改文件内容：先读取 在修改  在写入
// 先读取文件内容
// let str = fs.readFileSync('./data.txt').toString();
// // 再修改内容；
// let reg = /[a-zA-Z]+/g   // 正则表达式
// let res = str.replace(reg,123);
// console.log(res);
// // 在写入内容
// fs.writeFileSync('./data.txt',res);


// 4.删除文件   fs.unlink
// 异步删除文件
// fs.unlink('./3.txt',err=>{
//     // mac 电脑 注意需要给权限，给权限 在指令前面加上sudo，还需要输入你的电脑密码
//     if(err) {
//         return console.log(err);
//     }
//     console.log('删除成功');
// })

// 同步删除文件
// try {
//     fs.unlinkSync('./1.txt')
//     console.log('删除成功');
// }catch (err) {
//     console.log(err);
// }

// 5. 复制文件  fs.copyFile
// 异步复制文件
// fs.copyFile('./1.txt','./2.txt',err=>{
//     if(err) {
//         return console.log(err);
//     }
//     console.log('复制成功');
// })

// 同步复制文件
// try {
//     fs.copyFileSync('./2.txt','./3.txt');
//     console.log('复制成功');
// } catch (err) {
//     console.log(err);
// }

// 自己实现一个复制文件：先读取 ，在写入的过程
// function mycopy(src,dist) {
//     try {
//         // 先读取src路径下的内容，然后 在把读取的内容写入到dist目录下
//         fs.writeFileSync(dist,fs.readFileSync(src));
//     } catch (err) {
//         console.log(err);
//     }
// }
// mycopy('./3.txt','./4.txt');

// 6. 判断文件是否存在：如果一个数据已经存储了，就不需要在存储了；
// let data = {
//     name:'张三',
//     age:20
// }

// fs.existsSync
// 判断这个文件是否存在，如果存在就不在写入了，如果不存在在写入内容
// console.log(fs.existsSync('./data.json')); // 判断 data.json 文件是否存在，如果存在返回true，否则返回false

// if(!fs.existsSync('./data.json')) {
//     // 判断文件是否存在  只有同步方法
//     fs.writeFileSync('./data.json',JSON.stringify(data));
// }else {
//     console.log('已经写过了');
// }

// 7. 判断某个目录是否是文件
// 步骤1: 获取文件的详细信息：fs.stat

let stat = fs.statSync('../3.文件操作');
console.log(stat);

// // 步骤2 ： 通过详细信息判断这个文件是否是文件 或者是目录
console.log(stat.isFile()); // 如果是文件 返还 true 否则返还 false
if (stat.isFile()) {
    console.log('是文件');
} else {
    console.log('是目录');
}

// 追加保存数据 : json里存一个空数组json，提交过来的时候 ，获取json里的数组，在这个数组里追加内容，push ，追加完毕之后，在转json，在写入 data.json文件里；